package com.cby.leetcode.链表.LC160;

public class LC60 {

    public static void main(String[] args){

    }

    public class ListNode{
        int val;
        ListNode next;
        ListNode(int x){
            val = x;
            next = null;
        }
    }

    /**
     * 求两链表相交
     * 思路： 链表a = x + z ; b = y + z ; z为公共段
     *       则有 x + z + y = y + z + x
     *       即走完一个链表（到null） 跳到另一个链表走
     *       两者在到共同交点处最终距离一致
     */
    public class Solution{
        public ListNode getIntersection(ListNode headA,ListNode headB){
            ListNode a = headA;
            ListNode b = headB;

            //特殊情况a->next = b->next == null,此时不能用a->next判空，需要直接那a来判空
            while (a != b){
                a = a == null ? headB : a.next;
                b = b == null ? headA : b.next;
            }

            return a;
        }
    }

}
